/* Copyright 2012 Alejandro Alonso Mayo
This file is part of jmtools.

jmtools is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

jmtools is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with jmtools.  If not, see <http://www.gnu.org/licenses/>.
*/

#ifndef _LOGMANAGER_H_
#define _LOGMANAGER_H_

//System headers
#include <list>

//Project headers
#include <jmtools/win.h>
#include <jmtools/Singleton.h>
#include <jmtools/Log.h>

namespace JMTools
{
	namespace Logs
	{
#ifdef WIN
		class JMTOOLS_API LogManager : public JMTools::Utils::Singleton<LogManager> 
#else
		class LogManager : public JMTools::Utils::Singleton<LogManager>
#endif
		{
			friend class JMTools::Utils::Singleton<LogManager>;
		private:
		protected:
			std::list<Log *> logs;
			std::list<Log *> systemLogs;

			LogManager();
		public:
			//Contructors and Destructors
			virtual ~LogManager();

			//Gettters and Setters
			Log * getLog(std::string name);

			//Others
			virtual Log * create(std::string name="Log.log",bool system=true,bool cmd=true,LogType type=LT_INFORMATION, bool restricted=false);
			void systemLogMessage(std::string message,LogType type=LT_INFORMATION);
			void allLogMessage(std::string message,LogType type=LT_INFORMATION);
		};
	}
}
#endif
